package com.utn.tp.integrador.activities;

import java.util.ArrayList;

import android.app.ListActivity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.os.Bundle;
import android.preference.PreferenceManager;
import android.view.ContextMenu;
import android.view.ContextMenu.ContextMenuInfo;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.AdapterView.AdapterContextMenuInfo;

import com.utn.tp.integrador.R;
import com.utn.tp.integrador.adaptadores.RegistroAdapter;
import com.utn.tp.integrador.bd.BaseDatosSingleton;
import com.utn.tp.integrador.entidades.Accion;
import com.utn.tp.integrador.preferences.registroPreference;

public class RegistroAcciones extends ListActivity {

	private Bundle extras;
	private RegistroAdapter adaptador;
	private String nombreCon;
	private Accion accionToShow;

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.listaregistros);
		adaptador = getRegistroAdapter();
		extras = getIntent().getExtras();
		getListView().setAdapter(adaptador);
		registerForContextMenu(getListView());

		if (extras != null) {
			nombreCon = extras.getString("nombre");
			cargarLista(nombreCon);
		}

		setTitle("Registro de Acciones");
	}

	private boolean checkearFiltro() {
		if (PreferenceManager.getDefaultSharedPreferences(this).getInt(
				"filtroRegistro", 4) == 4) {
			return false;
		} else
			return true;
	}

	@Override
	public boolean onMenuItemSelected(int featureId, MenuItem item) {
		return menuChoice(item);
	}

	public RegistroAdapter getRegistroAdapter() {
		return new RegistroAdapter(this);
	}

	@Override
	public void onCreateContextMenu(ContextMenu menu, View view,
			ContextMenuInfo menuInfo) {
		super.onCreateContextMenu(menu, view, menuInfo);
		MenuInflater inflater = getMenuInflater();
		inflater.inflate(R.menu.menucontactocontextual, menu);
	}

	@Override
	public boolean onContextItemSelected(MenuItem item) {
		return menuChoice(item);
	}

	private boolean menuChoice(MenuItem item) {
		AdapterContextMenuInfo info = (AdapterContextMenuInfo) item
				.getMenuInfo();
		Bundle bundle = new Bundle();
		if (info != null) {
			accionToShow = (Accion) adaptador.getItem((int) info.id);
			bundle.putString("nombre", extras.getString("nombre"));
			bundle.putInt("AccionID", accionToShow.getId());
		}
		switch (item.getItemId()) {

		case R.id.item_detalle:// ver detalle del registro
			mostrarDetalleAccion(bundle);
			break;

		case R.id.item_borrar:// borrar registro
			BaseDatosSingleton.getInstance(this).getBaseDatos()
					.borrarRegistro(accionToShow.getId());
			break;
		}
		return true;
	}

	private void mostrarDetalleAccion(Bundle bundle) {
		Intent intent;
		intent = new Intent(RegistroAcciones.this, DetalleAccion.class);
		intent.putExtras(bundle);
		startActivity(intent);
	}

	private void cargarLista(String conta) {

		ArrayList<Accion> acciones = BaseDatosSingleton.getInstance(this)
				.getBaseDatos().getRegistroDeContacto(conta);
		for (int i = 0; i < acciones.size(); i++) {
			adaptador.addRegistro(acciones.get(i));
			adaptador.notifyDataSetChanged();

		}
	}

	private void recargarLista(String conta, int tipo) {
		adaptador.clear();
		ArrayList<Accion> acciones = BaseDatosSingleton.getInstance(this)
				.getBaseDatos().getRegistroDeContactoFiltrado(conta, tipo);
		for (int i = 0; i < acciones.size(); i++) {
			adaptador.addRegistro(acciones.get(i));
			adaptador.notifyDataSetChanged();
		}
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		getMenuInflater().inflate(R.menu.menuregistro, menu);
		return true;
	}

	@Override
	public boolean onOptionsItemSelected(MenuItem item) {
		startActivity(new Intent(RegistroAcciones.this,
				registroPreference.class));
		return true;
	}

	@Override
	protected void onResume() {
		super.onResume();

		SharedPreferences myPreference = PreferenceManager
				.getDefaultSharedPreferences(this);
		if (checkearFiltro()) {
			recargarLista(nombreCon, myPreference.getInt("filtroRegistro", 4));
		}

	}

}
